/**
 * @file swei_common.h
 * @brief 
 * @author  ()
 * @version 1.0
 * @date 2024-09-19
 * 
 * @copyright Copyright (C) 2019 Queclink Wireless Solutions (ShenZhen) Co., Ltd. All Rights Reserved.
 * 
 * @par 修改日志:
 * <table>
 * <tr><th>Date       <th>Version <th>Author  <th>Description
 * <tr><td>2024-09-19 <td>1.0     <td>     <td>内容
 * </table>
 */
#ifndef __SWEI_COMMON_H
#define __SWEI_COMMON_H


#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif


#define   IP_LEN            32
/* struct FW_NETWORK_INFO_STRU sdk接口中imei最大长度为24,但只有前15位有效,imei规范中长度为15 */
#define   IMEI_LEN          16
/* 16位(15位前面补0)转换为8421BCD码之后的长度  */
#define   IMEI_BCD_LEN      8
/*struct FW_NETWORK_INFO_STRU sdk接口中SN长度最大为20 */
#define   DEVICE_SN_LEN     20


/* 消息序列号最大值 */
#define MAX_SEQUENCE_NUMBER 65535

#ifndef _SSIZE_T
#define _SSIZE_T
typedef signed int ssize_t;
#endif

/**
 * @brief 数据包类型
 */
typedef enum{
    TYPE_LOGIN = 0, /*!< 登录数据包 */
    TYPE_HEARTBEAT, /*!< 心跳数据包 */
    TYPE_ACTIVE_REQ,    /*!< 激活数据包 */
    TYPE_DEVICE_ACK,    /*!< 设备应答数据包 */
    TYPE_LOC,       /*!< 定位数据包 */
    TYPE_STATUS,    /*!< 状态数据包 */
    TYPE_ALARM,     /*!< 报警数据包 */
    TYPE_CONFIG,    /*!< 配置数据包 */
    TYPE_MAX,
}data_type_e; /* 数据包类型 */


extern char *data_type_str[];


/**
 * @brief cache数据结构
 */
typedef struct
{
    uint32_t    vaild;      /*!< 数据是否有效 */
    uint32_t    data_id;    /*!< 数据包ID */
    data_type_e data_type;  /*!< 数据包类型 */
    int32_t     data_len;   /*!< 数据包长度 */
    uint8_t    *data_ptr;   /*!< 数据包指针 */
}swei_datatype_t;       


#ifndef errno_t
typedef int errno_t;
#endif

#ifdef __cplusplus
}
#endif

#endif
